package com.example.myapplication2;

import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import androidx.recyclerview.widget.RecyclerView;

import java.util.List;
import java.util.Map;

public class adapter extends RecyclerView.Adapter<adapter.myviewholder> {

    // 声明一个List，用于存储Map<String, Object>类型的数据，以及一个Context类型的变量
    List<Map<String, Object>> list;
    Context context;

    // 构造函数，用于初始化list和context
    public adapter(Context context, List<Map<String, Object>> list) {
        this.context = context;
        this.list = list;
    }

    // onCreateViewHolder方法：用于创建和返回一个新的ViewHolder实例
    // ViewGroup viewGroup：RecyclerView中用于放置新View的父ViewGroup
    // int i：当前ViewHolder的位置（通常未使用）
    @Override
    public adapter.myviewholder onCreateViewHolder(ViewGroup viewGroup, int i) {
        // 使用LayoutInflater从context中加载layout_item布局文件，并返回一个新的View实例
        View inflater = LayoutInflater.from(context).inflate(R.layout.layout_item, viewGroup, false);
        // 使用这个新加载的View实例来创建一个新的myviewholder实例，并返回它
        myviewholder myviewholder = new myviewholder(inflater);
        return myviewholder;
    }

    // onBindViewHolder方法：用于将数据绑定到ViewHolder的视图上
    // adapter.myviewholder myviewholder：当前要绑定的ViewHolder实例
    // int j：当前ViewHolder的位置（即数据列表中的索引）
    @Override
    public void onBindViewHolder(adapter.myviewholder myviewholder, int j) {
        // 从list中获取当前位置的数据项
        Map<String, Object> currentItem = list.get(j);
        // 设置imageView的图片资源
        myviewholder.imageView.setImageResource((Integer) currentItem.get("avatar"));

        // 获取name键对应的值，并将其转换为String类型，然后设置给textView1
        String str1 = list.get(j).get("name").toString();
        myviewholder.textView1.setText(str1);

        // 为linearLayout11设置点击监听器
        myviewholder.linearLayout11.setOnClickListener(new View.OnClickListener() {
            @Override
            // 当linearLayout11被点击时，执行以下操作
            public void onClick(View view) {
                // 创建一个新的Intent，用于启动Activity_contact_detail活动
                Intent intent = new Intent(context, Activity_contact_detail.class);
                // 将name的值作为额外数据放入intent中
                intent.putExtra("name", str1);
                // 使用context启动新的活动
                context.startActivity(intent);
            }
        });
    }

    // getItemCount方法：返回数据列表的大小
    @Override
    public int getItemCount() {
        return list.size();
    }

    // 定义一个静态内部类myviewholder，它继承自RecyclerView.ViewHolder
    class myviewholder extends RecyclerView.ViewHolder {
        TextView textView1;
        ImageView imageView;
        LinearLayout linearLayout11;

        // 构造函数，用于初始化视图组件
        public myviewholder(View itemView) {
            super(itemView);
            imageView = itemView.findViewById(R.id.imageView);
            textView1 = itemView.findViewById(R.id.textView_rc_1);
            linearLayout11 = itemView.findViewById(R.id.LinearLayout11);
        }
    }
}